let num: number = 10;
const str: string = "你好";

let undefinedValue: undefined;
let nullValue: null;
//
nullValue = null;

let person: { username: string };

person = { username: "string" };

let anyValue: any; // 翻译过来叫任意

// anyValue = true // 不到万不得已的时候  不要用any

// 函数类型
function fn(args: number): string {
  return "hello : " + args;
}

const res = fn(10);
console.log(res);
// 写一个函数 参数类型 boolean 返回值是 string 运行得到结果

function addQurt(x: number, y: number): number {
  return Math.pow(x, 2) + Math.pow(y, 2);
}

// 数组类型
// 对象类型

// 数组 : Array<number>
let arr: Array<number> = [1, 2, 3, 4];
let arr2: string[] = ["1", "2"];

// 对象的类型
let obj1: { username: string; password: string; age: number };
obj1 = {
  username: "张三",
  password: "123456",
  age: 20,
};

// 数组 嵌套对象  [{username: string},{username : string}]

// let arr3: { username: string }[];
let arr3: Array<{ username: string }>;

arr3 = [{ username: "string" }, { username: "string" }];

function paramsArgs(
  ...args: Array<{ username: string }>
): Array<{ username: string }> {
  console.log(args);
  return args;
}
// 练习 : 实现一个数字类型的可变数组作为函数的参数

paramsArgs({ username: "zhangsan" }, { username: "lisi" });

class MyClass {
  constructor() {}
}

type Inte = new () => void;
